package cn.tedu.ivos.vehicle.pojo.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**接受前端传给controller的数据的(然后传给service层处理)*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class VehicleSaveOrUpdateParamDTO {
    @Schema(description = "车辆id")
    private Long id;//修改车辆的时候，需要查询要修改的车辆信息时使用，所以需要id
    @Schema(description = "车辆品牌")
    private String brand;
    @Schema(description = "车牌号")//车牌号不能重复
    private String license;
    @Schema(description = "车辆型号")
    private String model;
    @Schema(description = "车辆识别码")//车辆识别码不能重复
    private String code;
    @Schema(description = "车辆排量")
    private String displacement;

    @Schema(description = "车辆类型",example = "轿车")
    private String type;
    @Schema(description = "车辆颜色")
    private String color;
    @Schema(description = "车辆里程数")
    private String kilometers;
    @Schema(description = "车辆上牌时间")
    //前端el-form表单传过来的时间格式是string类型，
    //所以需要用@DateTimeFormat格式化注解将时间转化为Date类型
    //才能封装到VehicleSaveOrUpdateParamDTO对象中(否则会抛出TypeMisMatchException，报400异常)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date regTime;
    @Schema(description = "车辆购买时间")
    //前端el-form表单传过来的时间格式是string类型，
    //所以需要用@DateTimeFormat格式化注解将时间转化为Date类型
    //才能封装到VehicleSaveOrUpdateParamDTO对象中(否则会抛出TypeMisMatchException，报400异常)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date buyTime;
    @Schema(description = "车辆购买价格")
    private String price;
    @Schema(description = "车辆电池类型")
    private String batteryType;

    //车辆分配页面可以对车辆分配电子围栏(如果已经绑定了则分配不了)，所以需要geofenceBindStatus
    @Schema(description = "电子围栏绑定状态")
    private String geofenceBindStatus;//修改车辆信息时使用//新增车辆时不需要
    @Schema(description = "电子围栏id")
    private Long geofenceId;//修改车辆信息时使用//新增车辆时不需要
    @Schema(description = "车辆状态",example = "空闲")
    private String status;//修改车辆信息时使用//新增车辆时不需要

}
